import axios from "axios";
import { Toast } from 'antd-mobile'
import EventBus from "@/utils/EventBus";

const request = axios.create({
    baseURL: "/api",
    timeout: 5000,
});

request.interceptors.request.use(
    (config) => {
        let token = localStorage.getItem('token')
        if (token) {
            config.headers = config.headers || {};
            config.headers['x-auth-token'] = token;
        }
        return config;
    },
    (err) => Promise.reject(err)
);
request.interceptors.response.use(
    (res) => {
        return res.data;
    },
    (err) => {
        // 在这里统一进行错误捕获
        // 获取报错，提示用户
        // console.log(err.response.data.message)
        Toast.show({ icon: 'fail', content: err.response.data.message })
        // 如果已经登录失效，要跳转回login
        if (err.response.data.errCode === 1002) {
            // 这里一定要跳转，但是由于 跳转使用的是 useNavigate 在这无法使用
            // 上面的情况称为： 紧耦合 
            // 解决方案就是解耦 ， 解耦的方式1： 订阅发布模式
            EventBus.emit('loginTimeout')
            // 把token清除
            localStorage.removeItem('token')
        }
    }
);

export default request;